#ifndef __STD_SHARED_H__
#define __STD_SHARED_H__


/* 具体的错误码 */
enum STATUS_CODE
{
    ON_SUCCESS,
    NULL_PTR,
    MALLOC_ERROR,
    INVALID_ACCESS,
    ILLEGALITY,
};

/* 业务功能 */
typedef enum FUNCTION_OPTION
{
    /* 注册 */
    REGIS = 1,    
    /* 登陆 */  
    LOGIN,   
    /* 私聊 */  
    PRI_CHAT,
    /* 群聊 */  
    GROUP_CHAT,
    /* 添加好友 */
    ADD_FRIEND,
    /* 删除好友 */
    DEL_FRIEND,
    /* 心跳检测 */
    HEART_CHECK,    
    /* 上线通知 */
    GOLIVE_NOTIFY,  
    /* 退出 */
    EXITS,
} FUNCTION_OPTION;


/* 用户信息的缓冲区大小 */
#define USERINFO_SIZE   16
/* 发送信息字节缓冲区大小 */
#define BUFFER_SIZE     128

/* 用户名 <-> 文件描述符(通信句柄) */
typedef struct UserToConnfd
{
    /* 用户名 */
    char username[USERINFO_SIZE];
    int connfd;
} UserToConnfd; 


/* 用户信息 - 结构体 */
typedef struct UserInfo 
{
    /* 业务功能 */
    enum FUNCTION_OPTION type;
    /* 用户名 */
    char username[USERINFO_SIZE];
    /* 账号 --- 服务器分配的 */
    char account[USERINFO_SIZE];
    /* 密码 */
    char passwd[USERINFO_SIZE];
} UserInfo;

/* 发送信息 结构体 */
typedef struct MessageInfo
{   
    /* 业务功能 */
    enum FUNCTION_OPTION type;
    /*  源用户 */
    char srcUser[USERINFO_SIZE];
    /*  目的用户 */
    char dstUser[USERINFO_SIZE];
    /* 信息内容 */
    char infoContent[BUFFER_SIZE];
    /* 标志位 */
    /* PRI_CHAT   :   代表私聊. dstUser代表指定的好友用户 */
    /* GROUP_CHAT :   代表群聊. dstUser代表指定的群名称   */
    int flag;       
} MessageInfo;




typedef enum REGIS_CODE
{
    /* 注册成功 */
    REGIS_SUCCESS,
    /* 用户名密码不合法 */
    REGIS_INVAILD,
    /* 重复注册 */
    REGIS_REPEAT,
    /* todo... */ 
} REGIS_CODE;

typedef enum LOGIN_CODE
{
    /* 登陆成功 */
    LOGIN_SUCCESS,
    /* 用户名密码不合法 */
    LOGIN_INVAILD,
    /* 未注册 */
    LOGIN_NO_REGISTER,
    /* 重复登陆 */
    LOGIN_REPEAT,
    /* 密码错误 */
    LOGIN_PASSWD_ERROR,
    /* todo... */
} LOGIN_CODE;


enum PRICHAT_CODE
{
    /* 私聊成功 */
    PRICHAT_SUCCESS,
    /* 私聊 - 非好友 */
    PRICHAT_NO_FRIENDS,
    /* todo... */
};


enum GROUPCHAT_CODE
{
    /* 群聊成功 */
    GROUPCHAT_SUCCESS,
    /* 群聊禁言 */
    GROUPCHAT_FORBID,
    /* 群聊移除 */
    GROUPCHAT_REMOVE,
    /* 群聊解散 */
    GROUPCHAT_DISMISS,
};

typedef enum ADDFRIEND_CODE
{
    /* 添加好友成功 */
    ADDFRIEND_SUCCESS,
    /* 已经是好友 */
    ADDFRIEND_ALREADY_YES,
    ADDFRIEND_FAILED,
} ADDFRIEND_CODE;

typedef enum DELFRIEND_CODE
{
    /* 删除好友成功 */
    DELFRIEND_SUCCESS,
    /* 该用户非你好友 */
    DELFRIEND_YET_FRI,
    DELFRIEND_FAILED,   
} DELFRIEND_CODE;

#endif